package com.jike.jkgame.network;

import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

import com.jike.jkgame.data.Player;
import com.jike.jkgame.data.UserStatus;


public class MessageFactory {
	
	private static final String TAG = MessageFactory.class.getSimpleName();
	
	private MessageFactory() throws IllegalAccessException{
		throw new IllegalAccessException();
	}
	
	public static JSONObject createRegistMessage(String name, String password) {
		JSONObject params = new JSONObject();
		try {
			params.put("mt", 1201);
			JSONObject user = new JSONObject();
			user.put("name", name);
			user.put("passwd", password);
			params.put("user", user);
		} catch (JSONException e) {
			Log.e(TAG, "createRegistMessage failed");
			return null;
		}
		
		return params;
	}
	
	public static JSONObject createLoginMessage(String name, String password) {
		
		JSONObject params = new JSONObject();
		try {
			params.put("mt", 1203);
			JSONObject user = new JSONObject();
			user.put("name", name);
			user.put("passwd", password);
			params.put("user", user);
			params.put("app_id", ServerConfig.APP_ID);
		} catch (JSONException e) {
			Log.e(TAG, "createRegistMessage failed");
			return null;
		}
		
		return params;
	}
	
	public static JSONObject createGetUserInfoReqMessage() {
		JSONObject params = new JSONObject();
		try {
			params.put("mt", 2101);
			params.put("rid", UserStatus.get().getUid());
		} catch (JSONException e) {
			Log.e(TAG, "createGetUserInfoReqMessage failed");
			return null;
		}
		return params;
	}
	
	public static JSONObject createIniteUseroReqMessage(String name, int gid) {
		JSONObject params = new JSONObject();
		try {
			params.put("mt", 2106);
			params.put("rid", UserStatus.get().getUid());
			params.put("general_id", gid);
			params.put("rname", name);
		} catch (JSONException e) {
			Log.e(TAG, "createIniteUseroReqMessage failed");
			return null;
		}
		return params;
	}
	
	public static JSONObject createDoMissionReqMessage(int missionId) {
		JSONObject params = new JSONObject();
		try {
			params.put("mt", 2154);
			params.put("rid", UserStatus.get().getUid());
			params.put("mid", missionId);
		} catch (JSONException e) {
			Log.e(TAG, "createDoMissionReqMessage failed");
			return null;
		}
		return params;
	}
	
	public static JSONObject createGetCurrentMissionReqMessage() {
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2150);
			json.put("rid", UserStatus.get().getUid());
		} catch (JSONException e) {
			Log.e(TAG, "createGetAllAvaliableMissionReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetMissionListReqMessage(long parentId) {
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2153);
			json.put("rid", UserStatus.get().getUid());
			json.put("2nd", parentId);
		} catch (JSONException e) {
			Log.e(TAG, "createGetMissionListReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetCityListReqMessage() {
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2151);
			json.put("rid", UserStatus.get().getUid());
		} catch (JSONException e) {
			Log.e(TAG, "createGetCityListReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetEventListReqMessage(int cityId) {
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2152);
			json.put("rid", UserStatus.get().getUid());
			json.put("1st", cityId);
		} catch (JSONException e) {
			Log.e(TAG, "createGetEventListReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetVSPlayerListReqMessage() {
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2200);
			json.put("rid", UserStatus.get().getUid());
		} catch (JSONException e) {
			Log.e(TAG, "createGetVSPlayerListReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetEnemiesReqMessage(){
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2201);
			json.put("rid", UserStatus.get().getUid());
		} catch (JSONException e) {
			Log.e(TAG, "createGetVSPlayerListReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetAttackPreviewReqMessage(Player palyer){
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2202);
			json.put("rid", UserStatus.get().getUid());
			json.put("oid", palyer.rid);
			json.put("bot", palyer.robot ? 1 : 0);
		} catch (JSONException e) {
			Log.e(TAG, "createGetVSPlayerListReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetAttackReqMessage(Player palyer){
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2203);
			json.put("rid", UserStatus.get().getUid());
			json.put("oid", palyer.rid);
			json.put("bot", palyer.robot ? 1 : 0);
		} catch (JSONException e) {
			Log.e(TAG, "createGetAttackReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetCompareReqMessage(Player palyer){
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2204);
			json.put("rid", UserStatus.get().getUid());
			json.put("oid", palyer.rid);
		} catch (JSONException e) {
			Log.e(TAG, "createGetCompareReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetUserBasicInfoReqMessage(){
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2102);
			json.put("rid", UserStatus.get().getUid());
		} catch (JSONException e) {
			Log.e(TAG, "createGetUserBasicInfoReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetUserBattleInfoReqMessage(){
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2103);
			json.put("rid", UserStatus.get().getUid());
		} catch (JSONException e) {
			Log.e(TAG, "createGetUserBattleInfoReqMessage failed");
			return null;
		}
		
		return json;
	}

	public static JSONObject createGetLineupInfoReqMessage(){
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2250);
			json.put("rid", UserStatus.get().getUid());
		} catch (JSONException e) {
			Log.e(TAG, "createGetLineupInfoReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetGeneralsReqMessage(){
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2251);
			json.put("rid", UserStatus.get().getUid());
		} catch (JSONException e) {
			Log.e(TAG, "createGetGeneralsInfoReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetWeponsReqMessage(){
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2252);
			json.put("rid", UserStatus.get().getUid());
		} catch (JSONException e) {
			Log.e(TAG, "createGetWeponsReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetArmorsReqMessage(){
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2253);
			json.put("rid", UserStatus.get().getUid());
		} catch (JSONException e) {
			Log.e(TAG, "createGetArmorsReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetMountsReqMessage(){
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2254);
			json.put("rid", UserStatus.get().getUid());
		} catch (JSONException e) {
			Log.e(TAG, "createGetMountsReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createGetTreasuresReqMessage(){
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2255);
			json.put("rid", UserStatus.get().getUid());
		} catch (JSONException e) {
			Log.e(TAG, "createGetTreasuresReqMessage failed");
			return null;
		}
		
		return json;
	}
	
	public static JSONObject createChangeResourceReqMessage(int castIdx, int type, int sid){
		JSONObject json = new JSONObject();
		try {
			json.put("mt", 2257);
			json.put("rid", UserStatus.get().getUid());
			json.put("castIdx", castIdx+1);
			json.put("type", type);
			json.put("sid", sid);
		} catch (JSONException e) {
			Log.e(TAG, "createChangeCastReqMessage failed");
			return null;
		}
		
		return json;
	}
	
}
